package com.issac.springbootredis.message_queue;

import com.issac.springbootredis.jedispool.Redis;

import java.util.Date;
/*
* 在测试过程中，频繁出现
*       class java.lang.Long cannot be cast to class java.util.List
*       (java.lang.Long and java.util.List are in module java.base of loader 'bootstrap') 异常
*
* 总结：
*   a. redis连接操作出现异常后，应该关闭close, 归还资源，重新去一个redis连接使用.不关闭资源容易导致继续执行
*   b. 连接池设置过大，重启项目的时候，本次初始化的加上之前未释放的连接(直接kill的进程，关闭时未释放)，瞬间链接过大
*
* */


public class DelayMessageQueueTest {
    public static void main(String[] args) {
        Redis redis = new Redis();

        redis.exectue(jedis -> {
            //构造一个消息队列
            DelayMessageQueue delayMessageQueue = new DelayMessageQueue(jedis, "delay_message-test");
            //构造消息生产者
            Thread producer = new Thread(){
                @Override
                public void run() {
                    for (int i = 0; i < 5; i++) {
                        delayMessageQueue.queue("message >>>>>"+i);
                    }
                }
            };
            //构造一个消费者
            Thread consumer = new Thread(){
                @Override
                public void run() {
                    delayMessageQueue.loop();
                }
            };

            producer.start();
            consumer.start();
            try {
                Thread.sleep(7000);
                consumer.interrupt();
                jedis.close();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }
}
